# NOTE(rkuo): I can't find an actual API that allows us to distinguish
# broken/incompatible objects from regular ones.
# taking hints from
# https://docs.resco.net/wiki/Salesforce_object_blacklist

SALESFORCE_BLACKLISTED_PREFIXES: set[str] = set(
    [
        "process",
        "aura",
        "app",
        "auth",
        "duplicate",
        "secure",
        "data",
        "listemail",
        "fsl__optimization",
        "fsl_scheduling",
        "feed",
        "chatter",
    ]
)

SALESFORCE_BLACKLISTED_SUFFIXES: set[str] = set(
    [
        "history",
        "share",
        "__tag",
        "__hd",
        "feed",
        "changeevent",
        "__ka",
        "__votestat",
        "__viewstat",
        "__kav",
        "__datacategoryselection",
        "subscription",
        "definition",
        "eventstream",
        "__mdt",
    ]
)

SALESFORCE_BLACKLISTED_OBJECTS: set[str] = set(
    [
        "acceptedeventrelation",
        "accountchangeevent",
        "accountcontactrole",
        "accountcontactrolechangeevent",
        "accounthistory",
        "accountshare",
        "actionlinkgrouptemplate",
        "actionlinktemplate",
        "activityhistory",
        "adminsetupevent",
        "aggregateresult",
        "announcement",
        "apexclass",
        "apexcomponent",
        "apexemailnotification",
        "apexlog",
        "apexpage",
        "apexpageinfo",
        "apextestqueueitem",
        "apextestresult",
        "apextestresultlimits",
        "apextestrunresult",
        "apextestsuite",
        "apextrigger",
        "apievent",
        "apptabmember",
        "assetchangeevent",
        "assethistory",
        "assetrelationshiphistory",
        "assettokenevent",
        "assignmentrule",
        "asyncapexjob",
        "backgroundoperation",
        "backgroundoperationresult",
        "batchapexerrorevent",
        "brandingset",
        "brandingsetproperty",
        "brandtemplate",
        "businessprocess",
        "campaignchangeevent",
        "campaignhistory",
        "campaignshare",
        "casechangeevent",
        "caseexternaldocument",
        "casehistory",
        "caseshare",
        "clientbrowser",
        "collaborationgroup",
        "collaborationgroupmember",
        "collaborationgroupmemberrequest",
        "collaborationinvitation",
        "connectedapplication",
        "contactchangeevent",
        "contacthistory",
        "contactrequest",
        "contactrequestshare",
        "contactshare",
        "contentasset",
        "contentbody",
        "contentdocumenthistory",
        "contenthubrepository",
        "contenttagsubscription",
        "contentusersubscription",
        "contentversionhistory",
        "contracthistory",
        "corswhitelistentry",
        "cronjobdetail",
        "crontrigger",
        "csptrustedsite",
        "custombrand",
        "custombrandasset",
        "customhelpmenuitem",
        "customhelpmenusection",
        "customhttpheader",
        "customobjectuserlicensemetrics",
        "custompermission",
        "custompermissiondependency",
        "dandbcompany",
        "dashboard",
        "dashboardcomponent",
        "digitalsignature",
        "documentattachmentmap",
        "domain",
        "domainsite",
        "emailcapture",
        "emaildomainfilter",
        "emaildomainkey",
        "emailrelay",
        "emailservicesaddress",
        "emailservicesfunction",
        "emailstatus",
        "emailtemplate",
        "embeddedservicedetail",
        "embeddedservicelabel",
        "entityparticle",
        "eventbussubscriber",
        "eventchangeevent",
        "eventlogfile",
        "eventrelationchangeevent",
        "expressionfilter",
        "expressionfiltercriteria",
        "externaldatasource",
        "externaldatauserauth",
        "fieldhistoryarchive",
        "fieldpermissions",
        "fieldservicemobilesettings",
        "filesearchactivity",
        "fiscalyearsettings",
        "flexqueueitem",
        "flowinterview",
        "flowinterviewshare",
        "flowrecordrelation",
        "flowstagerelation",
        "forecastingshare",
        "forecastshare",
        "fsl__criteria__c",
        "fsl__gantt_filter__c",
        "fsl__ganttpalette__c",
        "fsl__service_goal__c",
        "fsl__slr_cache__c",
        "fsl__territory_optimization_request__c",
        "goalhistory",
        "goalshare",
        "grantedbylicense",
        "idpeventlog",
        "iframewhitelisturl",
        "image",
        "imageshare",
        "installedmobileapp",
        "leadchangeevent",
        "leadhistory",
        "leadshare",
        "lightningexitbypagemetrics",
        "lightningexperiencetheme",
        "lightningtogglemetrics",
        "lightningusagebyapptypemetrics",
        "lightningusagebybrowsermetrics",
        "lightningusagebyflexipagemetrics",
        "lightningusagebypagemetrics",
        "linkedarticle",
        "listemailchangeevent",
        "listemailshare",
        "listview",
        "listviewchart",
        "listviewchartinstance",
        "listviewevent",
        "loginasevent",
        "loginevent",
        "logingeo",
        "loginhistory",
        "loginip",
        "logoutevent",
        "lookedupfromactivity",
        "macro",
        "macrohistory",
        "macroinstruction",
        "macroshare",
        "mailmergetemplate",
        "matchingrule",
        "matchingruleitem",
        "metricdatalinkhistory",
        "metrichistory",
        "metricshare",
        "mobilesettingsassignment",
        "mydomaindiscoverablelogin",
        "name",
        "namedcredential",
        "noteandattachment",
        "notificationmember",
        "oauthtoken",
        "objectpermissions",
        "onboardingmetrics",
        "openactivity",
        "opportunitychangeevent",
        "opportunitycontactrolechangeevent",
        "opportunityfieldhistory",
        "opportunityhistory",
        "opportunityshare",
        "orderchangeevent",
        "orderhistory",
        "orderitemchangeevent",
        "orderitemhistory",
        "ordershare",
        "orgdeleterequest",
        "orgdeleterequestshare",
        "orglifecyclenotification",
        "orgwideemailaddress",
        "outgoingemail",
        "outgoingemailrelation",
        "ownerchangeoptioninfo",
        "packagelicense",
        "period",
        "permissionsetlicense",
        "permissionsetlicenseassign",
        "permissionsettabsetting",
        "person",
        "picklistvalueinfo",
        "platformaction",
        "platformcachepartition",
        "platformcachepartitiontype",
        "platformstatusalertevent",
        "pricebook2history",
        "processinstancehistory",
        "product2changeevent",
        "product2history",
        "publisher",
        "pushtopic",
        "pushupgradeexcludedorg",
        "quicktexthistory",
        "quicktextshare",
        "quotetemplaterichtextdata",
        "recordaction",
        "recordactionhistory",
        "recordvisibility",
        "relationshipdomain",
        "relationshipinfo",
        "reportevent",
        "samlssoconfig",
        "scontrol",
        "searchactivity",
        "searchlayout",
        "searchpromotionrule",
        "securitycustombaseline",
        "servicereportlayout",
        "sessionpermsetactivation",
        "setupaudittrail",
        "setupentityaccess",
        "site",
        "sitedetail",
        "sitehistory",
        "siteiframewhitelisturl",
        "solutionhistory",
        "sosdeployment",
        "sossession",
        "sossessionactivity",
        "sossessionhistory",
        "sossessionshare",
        "staticresource",
        "streamingchannel",
        "streamingchannelshare",
        "subscriberpackage",
        "subscriberpackageversion",
        "taskchangeevent",
        "tenantusageentitlement",
        "testsuitemembership",
        "thirdpartyaccountlink",
        "todaygoal",
        "todaygoalshare",
        "transactionsecuritypolicy",
        "twofactorinfo",
        "twofactormethodsinfo",
        "twofactortempcode",
        "urievent",
        "userappinfo",
        "userappmenucustomization",
        "userappmenucustomizationshare",
        "userappmenuitem",
        "userchangeevent",
        "useremailpreferredperson",
        "useremailpreferredpersonshare",
        "userentityaccess",
        "userfieldaccess",
        "userlicense",
        "userlistview",
        "userlistviewcriterion",
        "userlogin",
        "userpackagelicense",
        "userpermissionaccess",
        "userpreference",
        "userprovaccount",
        "userprovaccountstaging",
        "userprovisioningconfig",
        "userprovisioninglog",
        "userprovisioningrequest",
        "userprovisioningrequestshare",
        "userprovmocktarget",
        "userrecordaccess",
        "usershare",
        "verificationhistory",
        "visibilitychangenotification",
        "visualforceaccessmetrics",
        "waveautoinstallrequest",
        "wavecompatibilitycheckitem",
        "weblink",
        "workcoachinghistory",
        "workcoachingshare",
        "workfeedbackhistory",
        "workfeedbackquestion",
        "workfeedbackquestionhistory",
        "workfeedbackquestionsethistory",
        "workfeedbackquestionsetshare",
        "workfeedbackquestionshare",
        "workfeedbackrequesthistory",
        "workfeedbackrequestshare",
        "workfeedbackshare",
        "workfeedbacktemplateshare",
        "workperformancecyclehistory",
        "workperformancecycleshare",
    ]
)
